﻿/**********************************************************/
/* 13-10-2010 - Twan Wolthof - 0910740        	          */
/*							                              */
/* Interface voor Model                                   */
/**********************************************************/
/* Jordy Langen - 0864307
 * 
 * 28-10-2010 - Versie 1.0
 * 
 * De Interface voor de Models
*/
using System.Collections.Generic;

namespace Roborally.CommonData.GlobaleTypes
{
    /// <summary>
    /// De delegates voor het wijziggen voor de models via een event
    /// </summary>
    public delegate void ModelGewijzigdHandler(ModelKloonHandler model);
    public delegate IModel ModelKloonHandler();

    public interface IModel
    {
        /// <summary>
        /// Het event dat gefired wordt elke keer wanneer het model moet worden aagepast
        /// </summary>
        event ModelGewijzigdHandler ModelGewijzigd;

        /// <summary>
        /// De kloonmethode voor het kopieren het model
        /// </summary>
        /// <returns>Een kopie van het model</returns>
        IModel Kloon();

        /// <summary>
        /// De lijst met ModelSpelerInfo objecten waarin de informatie van het spel wordt bijgehouden
        /// </summary>
        List<ModelSpelerInfo> ModelSpelerInfos { get; set; }

        /// <summary>
        /// Property voor de vakken van een bord met alleen een getter
        /// </summary>
        IVak[,] Vakken { get; }
    }
}
